As computers have evolved, they have moved from the realm of simple arithmetic computing, to media centers for any number of media and non-media applications. As a result, computer systems often include any number of peripheral or input/output devices. Furthermore, the advancement in semi-conductor processing and computer design have enabled computer systems to include more transistors and processing power on single physical processors, while also allowing multiple physical processors to reside in a single system. Previously, these processors and other devices were added to a computer system when the power was off, to allow the computer to correctly initialize and handle new components.
However, more recently, designers have enabled users to add or remove components/devices during runtime of the machine. Often this type of removal has been referred to as a “hot add” or “hot removal” of a device/component. Yet, hot add and removal of components is not limited to physical addition or removal from a system. In fact, software designers, such as Operating System (OS) designers, have also supported hot add or removal from a software's perspective. In other words, a hot removed device may still be physically present, powered down, not recognized by software, virtually removed, or any combination thereof.
As a corollary to the advancement of integrated circuits, and the processing power thereof, interconnects between the devices has also advanced to provide adequate bandwidth to high-power components. One type of interconnect architecture includes a coherent link based architecture. As a specific example, components in the architecture may be coupled utilizing point-to-point links, where devices/agents are viewed as nodes to route messages to each other.
Currently, when a component, agent, and/or node is “hot added” or “hot removed” from this type of interconnect architecture, the entire system is halted to update routing information to incorporate or deallocate the hot added or hot removed device, accordingly. Often this halt, or quiescence, results in a flushing of all current messages, as new routing information may cause routing errors with regard to the messages, a halt or quiescence of the system, and an update to routing tables by some external software or firmware, such as Basic Input Output Software (BIOS). As can be imagined, this quiescence process for adding or removing an agent is potentially expensive, which results in a potentially slower end-user experience.